<?php

/**
 * Classe représentant une fiche bilan du forum.
 * @author CHAGNON Laura, BALMAND Clémence
 * @since 25 septembre 2013
 * @version 1.0
 */

class FicheBilanForum
{
		/*Attributs*/
	/**
	 * Identifiant de la fiche forum
	 * @var int
	 */
	private $_id;

	/**
	 * Forum liée à la fiche
	 * @var int
	 */
	private $_id_forum;

	/**
	 * Durée effective de présence au forum
	 * @var string
	 */
	private $_dureeEffectivePresence;

	/**
	 * Temps du trajet
	 * @var string
	 */
	private $_tempsTrajet;

	/**
	 * Accueil au forum
	 * @var string
	 */
	private $_accueil;

	/**
	 * Emplacement au forum
	 * @var string
	 */
	private $_emplacement;

	/**
	 * Circulation au forum
	 * @var string
	 */
	private $_circulation;

	/**
	 * Fréquentation du forum
	 * @var string
	 */
	private $_frequentation;

	/**
	 * Interet a renouveler le forum
	 * @var string
	 */
	private $_interetRenouveler;

	/**
	 * Commentaire sur le forum
	 * @var string
	 */
	private $_commentaire;

	/**
	 * Etat de la fiche
	 * @var int
	 */
	private $_etat;

	/*Constructeur */

	public function __construct()
	{
		$args = func_get_args();

		switch(func_num_args())
		{
			case 1 : // juste l'id de la fiche forum.
				$this->set_id_forum($args[0]);
				break;
			case 9 : // ID_FORUM_FICHE_BILAN_FORUM, DUREE_FICHE_BILAN_FORUM, TEMPS_TRAJET_FICHE_BILAN_FORUM, ACCUEIL_FICHE_BILAN_FORUM, EMPLACEMENT_FICHE_BILAN_FORUM, CIRCULATION_FICHE_BILAN_FORUM, FREQUENTATION_FICHE_BILAN_FORUM, INTERET_RENOUVELER_FICHE_BILAN_FORUM, COMMENTAIRE_FICHE_BILAN_FORUM
				$this->set_id_forum($args[0]);
				$this->set_dureeEffectivePresence($args[1]);
				$this->set_tempsTrajet($args[2]);
				$this->set_accueil($args[3]);
				$this->set_emplacement($args[4]);
				$this->set_circulation($args[5]);
				$this->set_frequentation($args[6]);
				$this->set_interetRenouveler($args[7]);
				$this->set_commentaire($args[8]);
				break;
			default:
				trigger_error('Constructeur de Fiche bilan forum avec ' + func_num_args() + ' non défini.');
				break;
		}
	}

	/* Méthodes BDD */

	public function getOneFicheBilanForum()
	{
		$bdd = PDO2::getInstance();
		$donnees = $bdd->query(	'SELECT '.ID_FICHE_BILAN_FORUM.', '.ID_FORUM_FICHE_BILAN_FORUM.', TIME_FORMAT('.DUREE_FICHE_BILAN_FORUM.',"%H:%i") AS "'.DUREE_FICHE_BILAN_FORUM.'", TIME_FORMAT('.TEMPS_TRAJET_FICHE_BILAN_FORUM.',"%H:%i") AS "'.TEMPS_TRAJET_FICHE_BILAN_FORUM.'", '.ACCUEIL_FICHE_BILAN_FORUM.', '.EMPLACEMENT_FICHE_BILAN_FORUM.', '.CIRCULATION_FICHE_BILAN_FORUM.', '.FREQUENTATION_FICHE_BILAN_FORUM.', '.INTERET_RENOUVELER_FICHE_BILAN_FORUM.', '.COMMENTAIRE_FICHE_BILAN_FORUM.', '.ETAT_FICHE_BILAN_FORUM.'
								FROM '.TABLE_FICHE_BILAN_FORUM.'
								WHERE '.ID_FORUM_FICHE_BILAN_FORUM.' = \''.$this->get_id_forum().'\'');

		$d = $donnees->fetch();

		$this->set_id_forum($d[ID_FORUM_FICHE_BILAN_FORUM]);
		$this->set_dureeEffectivePresence($d[DUREE_FICHE_BILAN_FORUM]);
		$this->set_tempsTrajet($d[TEMPS_TRAJET_FICHE_BILAN_FORUM]);
		$this->set_accueil($d[ACCUEIL_FICHE_BILAN_FORUM]);
		$this->set_emplacement($d[EMPLACEMENT_FICHE_BILAN_FORUM]);
		$this->set_circulation($d[CIRCULATION_FICHE_BILAN_FORUM]);
		$this->set_frequentation($d[FREQUENTATION_FICHE_BILAN_FORUM]);
		$this->set_interetRenouveler($d[INTERET_RENOUVELER_FICHE_BILAN_FORUM]);
		$this->set_commentaire($d[COMMENTAIRE_FICHE_BILAN_FORUM]);
		$this->set_etat($d[ETAT_FICHE_BILAN_FORUM]);
	}

	public function checkFicheBilanForum()
	{
		$_SESSION['message'] = "";
		$retour = true;
		if($this->get_dureeEffectivePresence() != null || $this->get_tempsTrajet() != null || $this->get_accueil() != null || $this->get_emplacement() != null || $this->get_circulation() != null || $this->get_frequentation() != null || $this->get_interetRenouveler() != null)
		{
			if(!preg_match("#^[0-9]{2}:[0-9]{2}$#", $this->get_dureeEffectivePresence()))
			{
				$_SESSION['message'] .= "<br/>Format de la durée incorrecte, elle doit être de la forme hh:mm.";
				$retour = false;				
			}
			if(!preg_match("#^[0-9]{2}:[0-9]{2}$#", $this->get_tempsTrajet()))
			{
				$_SESSION['message'] .= "<br/>Format du temps de trajet incorrecte, elle doit être de la forme hh:mm.";
				$retour = false;
			}
			if(!preg_match("#^[1-5]$#", $this->get_accueil()) || !preg_match("#^[1-5]$#", $this->get_emplacement()) || !preg_match("#^[1-5]$#", $this->get_circulation()) || !preg_match("#^[1-5]$#", $this->get_frequentation()) || !preg_match("#^[1-3]$#", $this->get_interetRenouveler()))
			{
				$_SESSION['message'] .= "<br/>Erreur lors de l'enregistrement de la fiche bilan";
				$retour = false;
			}
		}
		else
		{
			$retour = false;
		}
		
		return $retour;
	}

	public function saveOneFicheBilanForum()
	{
		if($this->get_commentaire()==null)
			$commentaire="null";
		else
			$commentaire= '"'.$this->get_commentaire().'"';
		$bdd = PDO2::getInstance();
		$result = $bdd->exec('INSERT INTO '.TABLE_FICHE_BILAN_FORUM.' ('.ID_FORUM_FICHE_BILAN_FORUM.', '.DUREE_FICHE_BILAN_FORUM.', '.TEMPS_TRAJET_FICHE_BILAN_FORUM.', '.ACCUEIL_FICHE_BILAN_FORUM.', '.EMPLACEMENT_FICHE_BILAN_FORUM.', '.CIRCULATION_FICHE_BILAN_FORUM.', '.FREQUENTATION_FICHE_BILAN_FORUM.', '.INTERET_RENOUVELER_FICHE_BILAN_FORUM.', '.COMMENTAIRE_FICHE_BILAN_FORUM.', '.ETAT_FICHE_BILAN_FORUM.')
				VALUES ("'.$this->get_id_forum().'", "'.$this->get_dureeEffectivePresence().'", "'.$this->get_tempsTrajet().'", "'.$this->get_accueil().'", "'.$this->get_emplacement().'", "'.$this->get_circulation().'", "'.$this->get_frequentation().'", "'.$this->get_interetRenouveler().'", '.$commentaire.', 0)');
		
		if($result == 0)
			return false;
		else
			return true;
	}

	public function modifOneFicheBilanForum()
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec('UPDATE '.TABLE_FICHE_BILAN_FORUM.
								' SET '.DUREE_FICHE_BILAN_FORUM.' = "'.$this->get_dureeEffectivePresence().'", '.TEMPS_TRAJET_FICHE_BILAN_FORUM.' = "'.$this->get_tempsTrajet().'", '.ACCUEIL_FICHE_BILAN_FORUM.' = '.$this->get_accueil().', '.EMPLACEMENT_FICHE_BILAN_FORUM.' = '.$this->get_emplacement().', '.CIRCULATION_FICHE_BILAN_FORUM.' = '.$this->get_circulation().', '.FREQUENTATION_FICHE_BILAN_FORUM.' = '.$this->get_frequentation().', '.INTERET_RENOUVELER_FICHE_BILAN_FORUM.' = '.$this->get_interetRenouveler().', '.COMMENTAIRE_FICHE_BILAN_FORUM.' = "'.$this->get_commentaire().'"
								 WHERE '.ID_FORUM.' = '.$this->get_id_forum());
		if($result == 0)
			return false;
		else
			return true;
	}

	public function confirmFicheBilanForum()
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec('UPDATE '.TABLE_FICHE_BILAN_FORUM.
				' SET '.ETAT_FICHE_BILAN_FORUM.' = 1
				WHERE '.ID_FORUM.' = '.$this->get_id_forum());
		if($result == 0)
			return false;
		else
			return true;
	}

	/*Getters et Setters*/

	/**
	 * Fonction permettant de récupérer les évaluations des étudiants.
	 * @access public
	 * @return EvaluationEleve
	 */
	public function get_evaluation_fiche_forum()
	{
		$bdd = PDO2::getInstance();
		$d= $bdd->query('SELECT '.ID_EVALUATION.', '.ID_ETU_EVALUATION.', '.ID_FORUM_EVALUATION.', '.PRESENT_EVALUATION.', '.PRESENCE_EVALUATION.', '.DUREE_PRESENCE_EVALUATION.', '.TENUE_VESTIMENTAIRE_EVALUATION.', '.DISCOURS_EVALUATION.', '.LOGISTIQUE_EVALUATION.', '.COMMENTAIRE_EVALUATION.'
								FROM '.TABLE_EVALUATION_ELEVE.'
								WHERE '.ID_FORUM.' = \''.$this->get_id_forum().'\'');
		$d = $d->fetchAll(); // On recupére toutes les données sous forme d'un tableau associatif

		foreach($d as $don)
		{
			$_evaluationEleve[] = new EvaluationEleve($don[ID_ETU_EVALUATION], $don[ID_FORUM_EVALUATION], $don[PRESENT_EVALUATION], $don[PRESENCE_EVALUATION], $don[DUREE_PRESENCE_EVALUATION], $don[TENUE_VESTIMENTAIRE_EVALUATION], $don[DISCOURS_EVALUATION], $don[LOGISTIQUE_EVALUATION], $don[COMMENTAIRE_EVALUATION]);
		}
		return $_evaluationEleve;
	}

	/**
	 * Fcontion permettant de retourner les appréciations selon le nombre
	 * @param int $id
	 * @return string
	 */
	public function get_liste($id)
	{
		$result = false;
		if ($id == 1)
			$result="Très satisfaisant";
		elseif ($id == 2)
			$result="Satisfaisant";
		elseif ($id == 3)
			$result="Moyen";
		elseif ($id == 4)
			$result="Insuffisant";
		elseif ($id == 5)
			$result="Inexistant";

		return $result;
	}

	/**
	 * Fcontion permettant de retourner l'appréciations de l'interet a renouveler selon le nombre
	 * @param int $id
	 * @return string
	 */
	public function get_listeIaR($id)
	{
		$result = false;
		if ($id == 1)
			$result="Indispensable";
		elseif ($id == 2)
			$result="Utile";
		elseif ($id == 3)
			$result="Aucun intérêt";

		return $result;
	}

	/**
	 * Fonction permettant de récupérer l'identifiant de la fiche forum
	 * @return int
	 */
	public function get_id()
	{
		return $this->_id;
	}

	/**
	 * Fonction permettant de récupérer le forum associé a la fiche
	 * @return int
	 */
	public function get_id_forum()
	{
		return $this->_id_forum;
	}

	/**
	 * Fonction permettant de modifier le forum associé a la fiche
	 * @param int
	 */
	public function set_id_forum($forum)
	{
		$this->_id_forum=$forum;
	}

	/**
	 * Fonction permettant de récupérer la durée effective de la présence au forum
	 * @return string
	 */
	public function get_dureeEffectivePresence()
	{
		return $this->_dureeEffectivePresence;
	}

	/**
	 * Fonction permettant de modifier la durée effective de la présence au forum
	 * @param string
	 */
	public function set_dureeEffectivePresence($dureeEffectivePresence)
	{
		$this->_dureeEffectivePresence=$dureeEffectivePresence;
	}

	/**
	 * Fonction permettant de récupérer le temps du trajet
	 * @return string
	 */
	public function get_tempsTrajet()
	{
		return $this->_tempsTrajet;
	}

	/**
	 * Fonction permettant de modifier le temps du trajet
	 * @param string
	 */
	public function set_tempsTrajet($tempsTrajet)
	{
		$this->_tempsTrajet=$tempsTrajet;
	}

	/**
	 * Fonction permettant de récupérer l'accueil du forum
	 * @return string
	 */
	public function get_accueil()
	{
		return $this -> _accueil;
	}

	/**
	 * Fonction permettant de modifier l'accueil du forum
	 * @param string
	 */
	public function set_accueil($accueil)
	{
		$this->_accueil=$accueil;
	}

	/**
	 * Fonction permettant de récupérer l'emplacement du forum
	 * @return string
	 */
	public function get_emplacement()
	{
		return $this ->_emplacement;
	}

	/**
	 * Fonction permettant de modifier l'emplacement du forum
	 * @param string
	 */
	public function set_emplacement($emplacement)
	{

		$this->_emplacement=$emplacement;
	}

	/**
	 * Fonction permettant de récupérer la circulation du forum
	 * @return string
	 */
	public function get_circulation()
	{
		return $this ->_circulation;
	}

	/**
	 * Fonction permettant de modifier la circulation du forum
	 * @param string
	 */
	public function set_circulation($circulation)
	{
		$this->_circulation=$circulation;
	}

	/**
	 * Fonction permettant de récupérer la fréquentation du forum
	 * @return string
	 */
	public function get_frequentation()
	{
		return $this->_frequentation;
	}

	/**
	 * Fonction permettant de modifier la frequentation du forum
	 * @param string
	 */
	public function set_frequentation($frequentation)
	{
		$this->_frequentation=$frequentation;
	}

	/**
	 * Fonction permettant de récupérer l'interet a renouveler le forum
	 * @return string
	 */
	public function get_interetRenouveler()
	{
		return $this->_interetRenouveler;
	}

	/**
	 * Fonction permettant de modifier l'interet a renouveler le forum
	 * @param string
	 */
	public function set_interetRenouveler($interetRenouveler)
	{
		$this->_interetRenouveler=$interetRenouveler;
	}

	/**
	 * Fonction permettant de récupérer le commentaire du forum
	 * @return string
	 */
	public function get_commentaire()
	{
		return $this->_commentaire;
	}

	/**
	 * Fonction permettant de modifier le commentaire du forum
	 * @param string
	 */
	public function set_commentaire($commentaire)
	{
		$this->_commentaire=$commentaire;
	}
	
	/**
	 * Fonction permettant de récupérer l'état de la fiche action
	 * @param int
	 */
	public function get_etat()
	{
		return $this->_etat;
	}
	
	/**
	 * Fonction permettant de modifier l'état de la fiche action
	 * @param int
	 */
	public function set_etat($etat)
	{
		$this->_etat=$etat;
	}

}


?>